#include <iostream>
#include <assert.h>
#include <string.h>
using namespace std;

//单个航班信息结构体
typedef struct A_flight_info
{
	//航班编号
	char number[20];
	//起始地点和目的地
	char start_place[20];
	char final_destination[20];
	//起飞时间， 到达时间
	char start_time[20];
	char end_time[20];
	//票价
	double price;
	//折扣
	double discount;
	//航班容量，人数
	int capacity;
	int size;

	int lessrank1;//一等余票
	int lessrank2;//二等余票
	int lessrank3;//三等余票

}A_flight_info, *PA_flight_info;


//单个订票信息结构体
typedef struct A_ticket_info
{
	//姓名
	char name[20];
	//证件号
	char cus_number[20];
	//订单编号
	char order_number[20];
	//订票时间
	char time[20];
	//航班信息
	char number[20];
	PA_flight_info pinfo;
	//座位编号
	char seat_number[20];
	char seat[20];


}A_ticket_info, *PA_ticket_info;

//航班信息， 使用动态顺序表实现
typedef struct Fiight_info
{
	int capacity;
	int size;
	PA_flight_info data;
}Fiight_info, *PFiight_info;

//订票情况, 使用动态顺序表实现
typedef struct Ticket_info
{
	int capacity;
	int size;
	PA_ticket_info data;
}Ticket_info, *PTicket_info;


//菜单
void menu();

//初始化航班信息
void Init_Fiight_info(PFiight_info& PF);

//录入航班情况
void Push_back(PFiight_info& PF);
//输入航班信息
void Input(PA_flight_info& PA);

//查找航班信息
void Find(PFiight_info& PF);

PA_flight_info Find_number(PFiight_info& PF);
void Find_start_place(PFiight_info& PF);
void Find_final_destination(PFiight_info& PF);


//修改航班信息
void Modifi(PFiight_info& PF);

//打印航班信息
void Print(PFiight_info& PF);

//打印一个航班信息
void PrintOne(PA_flight_info& PA);

//删除该航班
void Delete(PFiight_info& PF);


//航班信息输入到文件（文件名默认为c）
void Save_flight_info(PFiight_info& PF);

void Save_ticket_info(PTicket_info& PT);



//初始化订票顺序表
void Init_Ticket_info(PTicket_info& PT);

//订票(就是插入信息)
void Push_back_t(PTicket_info& PT, PFiight_info& PF);
//输入信息
int Input_t(PA_ticket_info& PA, PFiight_info& PF);

//退票(删除指定信息)
void Delete_t(PTicket_info& PT, PFiight_info& PF);

//程序结束，释放内存

void Destory(PTicket_info& PT, PFiight_info& PF);